/*Quita el elemento tope de la pila. Pasando el valor a obtener por parametro.
Devuelve 1 en caso de haber podido obtener un elemento.
0 en cualquier otro caso.*/
int Pop (double *topePila, int tamanioPila, int *cantidadElementos,double *output)
{
	if ( (*cantidadElementos) < 0 )
	{
		return 0;
	}
	(*cantidadElementos)--;
	*output = *(topePila + (*cantidadElementos)*sizeof(double) );
	return 1;
}

/*Inserta un nuevo valor en la pila.
Devuelve 1 en caso de correcta insercion.
0 en cualquier otro caso.*/
int Push (double *topePila, int tamanioPila, int *cantidadElementos,double input)
{
	if ( (*cantidadElementos) == tamanioPila )
	{
		return 0;
	}
	(*cantidadElementos)++;
	*(topePila + (*cantidadElementos)*sizeof(double) )= input;
	return 1;
}
	
/*Recorre toda la pila sumando todos los elementos que la componen
retornando el resultado de la suma.
Devuelve 1 en caso de haber podido obtener la suma total de los elementos.
0 en cualquier otro caso.
*/
int SumaTotal(double *topePila,int tamanioPila,
	int *cantidadElementos,double *resultadoSuma)
{
	// all integers or pointers, use $4, $5, $6, $7
	int i;
	double suma;
	i = 0;
	suma = 0;
	
	while (i < *cantidadElementos)
	{
		suma += *(topePila + i*sizeof(double));
		i++;
	}
	*resultadoSuma = suma;
	return 1;
}

